﻿create procedure [dbo].[sp_ResultadoBusqueda_Search]
@Desde datetime = null,
@Hasta datetime = null,
@IdProyecto int = 0,
@IdEstado int = 0,
@IdCustodio int = 0,
@IdResponsable int = 0,
@IdGerente int = 0,
@IdBanco int = 0,
@NumeroRendicion int = 0,
@CentroDeCostos varchar(50) = null,
@NumeroCheque varchar(50) = null,
@NumeroTransferencia varchar(50) = null,
@NumeroDeposito varchar(50) = null
as
begin
	select	r.Sysid [NroSol],
			r.FechaCreacion [FechaEnvio],
			ltrim(rtrim(isnull(uu.Nombre,'') + ' ' + isnull(uu.Apellido,''))) [Custodio],
			ltrim(rtrim(isnull(ur.Nombre,'') + ' ' + isnull(ur.Apellido,''))) [Responsable],
			ltrim(rtrim(isnull(ug.Nombre,'') + ' ' + isnull(ug.Apellido,''))) [Gerente],
			p.NomProyecto [Proyecto],
			e.DesEstado [Estado]
	from	TB_Rendiciones r
			inner join Rel_ProyectoRolUsuarios rpr on
				rpr.SysProyecto = r.SysProyecto
			and rpr.SysRol = 2
			inner join TB_Usuario ur on
				ur.Sysid = rpr.SysUsuario
			inner join Rel_ProyectoRolUsuarios rpg on
				rpg.SysProyecto = r.SysProyecto
			and rpg.SysRol = 3
			inner join TB_Usuario ug on
				ug.Sysid = rpg.SysUsuario
			left outer join Rel_ProyectoRolUsuarios rpu on
				rpu.SysProyecto = r.SysProyecto
			and	rpu.SysUsuario = r.SysUsuario
			and rpu.SysRol = 1
			left outer join TB_Usuario uu on
				uu.Sysid = rpu.SysUsuario
			inner join Tb_Proyectos p on
				p.SysProyecto = r.SysProyecto
			and p.Activo = 1
			inner join TB_Estado e on
				e.Sysid = r.SysEstado
	where		((@IdProyecto is null or @IdProyecto = 0) or r.SysProyecto = @IdProyecto)
			and	((@IdEstado is null or @IdEstado = 0) or r.SysEstado = @IdEstado)
			and	((@IdCustodio is null or @IdCustodio = 0) or rpu.SysUsuario = @IdCustodio)
			and	((@IdResponsable is null or @IdResponsable = 0) or rpr.SysUsuario = @IdResponsable)
			and	((@IdGerente is null or @IdGerente = 0) or rpg.SysUsuario = @IdGerente)
			and ((@NumeroRendicion is null or @NumeroRendicion = 0) or r.Sysid = @NumeroRendicion)
			and ((@CentroDeCostos is null or @CentroDeCostos = '') or p.CentroCosto like '%' + @CentroDeCostos + '%')
			and ((@NumeroCheque is null or @NumeroCheque = '') or r.NroCheque like '%' + @NumeroCheque + '%')
			and ((@NumeroTransferencia is null or @NumeroTransferencia = '') or r.NroTransferencia like '%' + @NumeroTransferencia + '%')
			and ((@NumeroDeposito is null or @NumeroDeposito = '') or r.NroDeposito like '%' + @NumeroDeposito + '%')
			and ((@Desde is null and @Hasta is null)
			  or (@Desde is not null and @Hasta is null and r.FechaCreacion > @Desde)
			  or (@Desde is null and @Hasta is not null and r.FechaCreacion > @Hasta)
			  or (@Desde is not null and @Hasta is not null and r.FechaCreacion between @Desde and @Hasta))
end
